/*
 *
 * www.cutebear.com Inc.
 * Copyright (c) 2017  All Rights Reserved
 */

package com.acooly.module.openapi.client.provider.yipay.enums;

import com.acooly.core.utils.enums.Messageable;
import com.google.common.collect.Maps;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Created by liubin@prosysoft.com on 2017/9/27.
 */
public enum YipayCodeEnum implements Messageable {

    CODE_0000("0000", "处理成功，非0000为失败"),
    CODE_9999("9999", "系统异常"),
    CODE_9998("9998", "页面请求超时，请重新发起"),
    CODE_9997("9997", "页面重复请求，请查看"),
    CODE_9996("9996", "操作金额小与等于0"),
    CODE_9995("9995", "操作冻结金额小与等于0"),
    CODE_9994("9994", "用户会话异常"),
    CODE_9993("9993", "页面刷新或重试次数过多"),
    CODE_9992("9992", "页面刷新或重试太过频繁"),
    CODE_9991("9991", "订单重复提交"),
    CODE_0001("0001", "充值金额错误"),
    CODE_0002("0002", "充值手续费错误"),
    CODE_0003("0003", "充值类型错误"),
    CODE_0004("0004", "充值请求参数不合法"),
    CODE_0005("0005", "充值订单号重复"),
    CODE_0006("0006", "通联支付回调出错"),
    CODE_0007("0007", "充值失败"),
    CODE_0008("0008", "充值金额小于手续费"),
    CODE_0009("0009", "订单状态错误"),
    CODE_0010("0010", "充值订单更新异常"),
    CODE_0011("0011", "充值订单超时，支付失败"),
    CODE_0012("0012", "富滇银行回调错误"),
    CODE_0502("0502", "提现手续费不能为空"),
    CODE_0503("0503", "提现金额格式错误"),
    CODE_0504("0504", "提现手续费格式错误"),
    CODE_0505("0505", "提现手续费大于提现金额"),
    CODE_0506("0506", "提现金额大于账户余额"),
    CODE_0507("0507", "提现订单号已存在"),
    CODE_0508("0508", "提现订单超时无效"),
    CODE_0509("0509", "提现绑定银行卡信息错误"),
    CODE_0510("0510", "提现信息更新错误"),
    CODE_0511("0511", "提现是否审核类型不正确"),
    CODE_0512("0512", "提现订单号不能重复"),
    CODE_0513("0513", "提现审核更新数据错误"),
    CODE_0514("0514", "提现订单超时，提现状态改为失败"),
    CODE_0515("0515", "提现不需要审核"),
    CODE_1001("1001", "投资订单号不存在"),
    CODE_1002("1002", "商户标的号不能为空"),
    CODE_1003("1003", "商户标的名称不能为空"),
    CODE_1004("1004", "标的金额不能为空"),
    CODE_1005("1005", "投标的金额不能为空"),
    CODE_1006("1006", "投标的奖励金额不能为空"),
    CODE_1007("1007", "标的类型不存在"),
    CODE_1008("1008", "资金使用方和融资人帐号不能相同"),
    CODE_1009("1009", "资金使用方托管账户不存在"),
    CODE_1010("1010", "担保方托管账户不存在"),
    CODE_1011("1011", "担保方和融资人帐号不能相同"),
    CODE_1012("1012", "同一个商户,商户标的号要唯一"),
    CODE_1013("1013", "重复的订单号"),
    CODE_1014("1014", "标的信息不能为空"),
    CODE_1015("1015", "标的金额格式不对"),
    CODE_1016("1016", "发定向标，资金使用方的用户名和账户号都不能为空"),
    CODE_1017("1017", "投标用户账户类型有误"),
    CODE_1018("1018", "投资人账户余额不足"),
    CODE_1019("1019", "标的不存在"),
    CODE_1020("1020", "此标不能投资(标的状态为不可投资状态)"),
    CODE_1021("1021", "融资人、供应链企业、担保企业不能认购自己的项目"),
    CODE_1022("1022", "同一订单不能多次投同一个标"),
    CODE_1023("1023", "投资金额大于剩余募集金额"),
    CODE_1024("1024", "商户余额不足，无法扣除投资奖励"),
    CODE_1025("1025", "借款管理费为空或格式错误"),
    CODE_1026("1026", "满标的类型不正确"),
    CODE_1027("1027", "标的不符合满标条件，无法进行满标审核"),
    CODE_1028("1028", "该定向标未审核或者审核不通过"),
    CODE_1029("1029", "标的账户已投的金额不足"),
    CODE_1030("1030", "标的信息异常"),
    CODE_1031("1031", "标的账户为空"),
    CODE_1032("1032", "标的账户余额不足"),
    CODE_1033("1033", "该标的无法进行撤标"),
    CODE_1034("1034", "金额小于0"),
    CODE_1035("1035", "定向融资标收款人不能是商户及借款本人"),
    CODE_1036("1036", "借款管理费不能大于等于标的募集资金"),
    CODE_1037("1037", "授权方式错误，只能是授权和取消授权"),
    CODE_1038("1038", "保存授权信息失败"),
    CODE_1039("1039", "该用户存在已授权的信息，请先取消授权"),
    CODE_1040("1040", "该用户无已授权的信息，无法取消授权"),
    CODE_1041("1041", "该用户没授权信息，无法自动投标，请先授权"),
    CODE_1042("1042", "融资信息和用户信息不匹配"),
    CODE_1043("1043", "标的类型信息错误"),
    CODE_1044("1044", "定向标入账账号或用户名为空"),
    CODE_1045("1045", "担保方账号或用户名为空"),
    CODE_1046("1046", "标的名称长度超过256位"),
    CODE_1047("1047", "担保标用户名不存在或者非该商户号下的用户名"),
    CODE_1048("1048", "担保标账户号不存在或者非该用户名下的账户号"),
    CODE_1049("1049", "定向标用户名不存在或者非该商户号下的用户名"),
    CODE_1050("1050", "定向标账户号不存在或者非该用户名下的账户号"),
    CODE_1051("1051", "投标的奖励金额格式不对"),
    CODE_1052("1052", "投标的奖励金额大于限定的最大值"),
    CODE_1053("1053", "标的账户不存在或非该标的号下的标的账号"),
    CODE_1054("1054", "标的账号位数超过32位"),
    CODE_1055("1055", "自然人在同一网络借贷信息中介机构平台的借款余额超上限"),
    CODE_1056("1056", "自然人在不同网络借贷信息中介机构平台借款总余额超上限"),
    CODE_1057("1057", "法人或其他组织在同一网络借贷信息中介机构平台的借款余额超上限"),
    CODE_1058("1058", "法人或其他组织在不同网络借贷信息中介机构平台借款总余额超上限"),
    CODE_1059("1059", "借款用户不能为商户"),
    CODE_1060("1060", "定向用户不能为商户"),
    CODE_1061("1061", "担保用户不能为商户"),
    CODE_1062("1062", "担保用户不能发标"),
    CODE_1063("1063", "担保用户不能投标"),
    CODE_1064("1064", "定向用户不能为担保用户"),
    CODE_1065("1065", "定向标接口已关闭"),
    CODE_1066("1066", "标的状态不为放款成功或还款中,不能进行投资迁移"),
    CODE_1067("1067", "标的金额不能为0"),
    CODE_1068("1068", "标的金额不能等于已还金额"),
    CODE_1069("1069", "奖励金额不能大于投资金额"),
    CODE_1070("1070", "投资金额不能大于标的金额"),
    CODE_1071("1071", "商户没有授权功能"),
    CODE_3001("3001", "p2p用户标识为空"),
    CODE_3002("3002", "用户真实姓名不能为空"),
    CODE_3003("3003", "用户手机不存在或格式错误"),
    CODE_3004("3004", "证件类型错误或者不是"),
    CODE_3005("3005", "证件号码为空"),
    CODE_3006("3006", "该手机号在此商户下已经被使用"),
    CODE_3007("3007", "支付密码和确认支付密码不相同"),
    CODE_3008("3008", "用户名不存在或非该商户下的用户名"),
    CODE_3009("3009", "用户未激活或者信息有误"),
    CODE_3010("3010", "身份证信息和真实姓名不匹配"),
    CODE_3011("3011", "用户支付密码有误，请重新输入"),
    CODE_3012("3012", "用户名不能空或错误"),
    CODE_3013("3013", "调用实名核查接口失败"),
    CODE_3014("3014", "证件号码已被使用"),
    CODE_3015("3015", "支付密码格式错误"),
    CODE_3016("3016", "法人姓名不能为空"),
    CODE_3017("3017", "企业名称不能为空"),
    CODE_3018("3018", "组织机构代码不能为空"),
    CODE_3019("3019", "营业执照编号不能为空"),
    CODE_3020("3020", "税务登记号不能为空"),
    CODE_3021("3021", "企业名称不能与商户名称相同"),
    CODE_3022("3022", "企业信息已存在，不能重复申请"),
    CODE_3023("3023", "修改手机时，修改方式错误"),
    CODE_3024("3024", "手机号在该商户下已被使用，请更换手机号"),
    CODE_3025("3025", "提交更新手机号信息失败"),
    CODE_3026("3026", "更新手机号协议号不能为空"),
    CODE_3027("3027", "更新手机号审核人不能为空"),
    CODE_3028("3028", "更新手机号审核状态不对"),
    CODE_3029("3029", "更新手机号申请记录不存在"),
    CODE_3030("3030", "更新手机号信息异常"),
    CODE_3031("3031", "交易密码错误"),
    CODE_3032("3032", "发送短信错误"),
    CODE_3033("3033", "orderDate，必须是当前交易日"),
    CODE_3034("3034", "身份证号码匹配错误"),
    CODE_3035("3035", "更新用户授权信息错误，请重新发起请求"),
    CODE_3036("3036", "真实姓名必须是中文且不能大于32个汉字或小于2个汉字"),
    CODE_3037("3037", "证件号码格式错误"),
    CODE_3038("3038", "重置密码信息不存在"),
    CODE_3039("3039", "更新重置密码记录异常"),
    CODE_3040("3040", "数据已过期，请重新修改"),
    CODE_3041("3041", "法人姓名必须是中文且不能大于32个汉字"),
    CODE_3042("3042", "订单日期格式错误（必须为8位数值，yyyyMMdd）"),
    CODE_3043("3043", "营业执照编号格式不正确"),
    CODE_3044("3044", "组织机构码格式不正确"),
    CODE_3045("3045", "统一社会信用代码不能为空"),
    CODE_3046("3046", "统一社会信用代码格式不正确(统一社会信用代码由18位的阿拉伯数字或大写英文字母（不使用I、O、Z、S、V）组成)"),
    CODE_3047("3047", "是否三证合一不能为空且只能为0或1"),
    CODE_3048("3048", "该统一社会信用代码在此商户下已被使用"),
    CODE_3049("3049", "该组织机构代码在此商户下已被使用"),
    CODE_3050("3050", "该营业执照编号在此商户下已被使用"),
    CODE_3051("3051", "该税务登记号在此商户下已被使用"),
    CODE_3052("3052", "企业申请信息不存在"),
    CODE_3053("3053", "企业已开户"),
    CODE_3054("3054", "CFCA加密失败"),
    CODE_3055("3055", "公司类型错误"),
    CODE_3056("3056", "支付密码能为空"),
    CODE_3057("3057", "第三方实名认证失败"),
    CODE_3058("3058", "企业信息变更类型错误"),
    CODE_3059("3059", "企业信息变更异常"),
    CODE_3060("3060", "企业信息不存在"),
    CODE_3061("3061", "原企业名称不能为空"),
    CODE_3062("3062", "企业法人代表信息错误"),
    CODE_3063("3063", "该用户已申请修改手机"),
    CODE_3064("3064", "企业名称格式错误"),
    CODE_3065("3065", "企业认证失败，请确认企业名称和统一社会信用代码或组织机构代码一致"),
    CODE_3066("3066", "更新手机号码只能个人用户"),
    CODE_3067("3067", "更新手机号码鉴权失败"),
    CODE_3501("3501", "账户编号不能为空"),
    CODE_3502("3502", "账户余额不足或状态异常"),
    CODE_3503("3503", "账户号不存在或非该用户名下的账户号"),
    CODE_3504("3504", "资金日志类型没定义"),
    CODE_3505("3505", "银行卡格式错误"),
    CODE_3506("3506", "您尚有未确认的绑卡记录或已绑卡"),
    CODE_3507("3507", "此用户无绑卡记录"),
    CODE_3508("3508", "验卡扣款金额错误"),
    CODE_3509("3509", "当前用户无此银行卡"),
    CODE_3510("3510", "绑卡确认次数超出，绑卡失败请重新绑卡"),
    CODE_3511("3511", "此卡已确认"),
    CODE_3512("3512", "银行卡信息更新失败"),
    CODE_3513("3513", "您尚有未确认的绑卡记录"),
    CODE_3514("3514", "绑卡状态错误，已绑卡成功或绑卡失败"),
    CODE_3515("3515", "银行卡号和银行卡名称匹配错误"),
    CODE_3516("3516", "凭证编号不能为空"),
    CODE_3517("3517", "该凭证编号已被使用"),
    CODE_3518("3518", "划出账户和划入账户不能全为空"),
    CODE_3519("3519", "操作金额必须大于0"),
    CODE_3520("3520", "账户冻结金额不足"),
    CODE_3521("3521", "保存账户调账信息失败"),
    CODE_3522("3522", "当划出账户和划入账户为同一个账户时，资金类型不能相同"),
    CODE_3523("3523", "该卡号已绑定"),
    CODE_3524("3524", "此用户无绑卡记录或绑定多张银行卡"),
    CODE_3525("3525", "此卡申请绑卡次数过多"),
    CODE_3526("3526", "更换银行卡处理失败"),
    CODE_3527("3527", "划出账户不能为空"),
    CODE_3528("3528", "划入账户不能为空"),
    CODE_3529("3529", "划入划出账户不能同时为标的账户"),
    CODE_3530("3530", "划入划出账户不能同时为商户账户"),
    CODE_3531("3531", "绑卡银行方处理失败"),
    CODE_3532("3532", "暂不支持绑定该银行的银行卡"),
    CODE_3533("3533", "卡号与所选银行不匹配"),
    CODE_3534("3534", "回款的投资订单号不能为空"),
    CODE_3535("3535", "回款的投资订单日期不能为空"),
    CODE_3536("3536", "回款的投资记录不存在"),
    CODE_3537("3537", "回款的投资订单日期错误"),
    CODE_3538("3538", "确认银行卡格式错误"),
    CODE_3539("3539", "确认银行卡和银行卡不一致"),
    CODE_3540("3540", "企业账户不允许更换银行卡"),
    CODE_4001("4001", "商户编号不能为空"),
    CODE_4002("4002", "商户不存在"),
    CODE_4501("4501", "同步通知地址为空"),
    CODE_4502("4502", "异步通知地址为空"),
    CODE_4503("4503", "短信验证码错误"),
    CODE_4504("4504", "业务参数被修改"),
    CODE_4505("4505", "订单号不能为空,或者格式错误（0-9数字组成，必须在12位到32位）"),
    CODE_4506("4506", "订单日期不能为空"),
    CODE_4507("4507", "手机短信验证码错误"),
    CODE_4508("4508", "图片验证码错误"),
    CODE_4509("4509", "手机号不能为空"),
    CODE_4510("4510", "验证码不能为空"),
    CODE_4511("4511", "发送类型不能为空"),
    CODE_4512("4512", "手机验证码失效,请重新获取"),
    CODE_4513("4513", "手机验证码输入次数超出限制次数"),
    CODE_5001("5001", "请求参数为空"),
    CODE_5002("5002", "交易金额为空或者格式错误"),
    CODE_5003("5003", "银行卡号错误"),
    CODE_5004("5004", "银行支行信息为空"),
    CODE_5005("5005", "银行联行号为空"),
    CODE_5006("5006", "p2pCode编号为空"),
    CODE_5007("5007", "真实姓名为空"),
    CODE_5008("5008", "请求日期为空"),
    CODE_5009("5009", "请求交易号为空"),
    CODE_5010("5010", "请求校验时间为空"),
    CODE_5011("5011", "身份证号不能为空"),
    CODE_5012("5012", "接口请求失败"),
    CODE_5013("5013", "查询交易流水号不能为空"),
    CODE_5014("5014", "卡类型不能为空"),
    CODE_5017("5017", "短信内容不能为空"),
    CODE_5018("5018", "短信内容不能超过64汉字"),
    CODE_5019("5019", "此用户已绑定银行卡或正在绑卡处理中"),
    CODE_5020("5020", "该用户绑卡失败三次，不能再进行绑卡"),
    CODE_5021("5021", "系统异常,银行接口调用失败"),
    CODE_5501("5501", "债权标的号为空或错误"),
    CODE_5502("5502", "债权转让本金不能为空"),
    CODE_5503("5503", "债权转让本金格式错误"),
    CODE_5504("5504", "债权原投资订单号不能为空"),
    CODE_5505("5505", "债权原投资订单日期不能为空"),
    CODE_5506("5506", "债权原有投资信息为空"),
    CODE_5507("5507", "债权原有投资状态错误"),
    CODE_5508("5508", "发布债权额度超出上限"),
    CODE_5509("5509", "未满标放款或已经完成还款的标的不能发布债权"),
    CODE_5510("5510", "债权订单号已存在"),
    CODE_5511("5511", "债权承接金额不能为空"),
    CODE_5512("5512", "债权转让金额不能为空"),
    CODE_5513("5513", "债权承接金额格式错误"),
    CODE_5514("5514", "债权转让金额格式错误"),
    CODE_5515("5515", "转让人不能投自己发布的债权"),
    CODE_5516("5516", "债权购买订单号已存在"),
    CODE_5517("5517", "债权承接人账户余额不足"),
    CODE_5518("5518", "债权为不可投资状态"),
    CODE_5519("5519", "债权信息不存在"),
    CODE_5520("5520", "债权投资额度超出上限"),
    CODE_5521("5521", "债权投资支付密码错误"),
    CODE_5522("5522", "债权投资状态错误"),
    CODE_5523("5523", "债权转让金额错误"),
    CODE_5524("5524", "债权信息错误，不能审核"),
    CODE_5525("5525", "债权已撤销"),
    CODE_5526("5526", "债权已审核通过无法撤销"),
    CODE_5527("5527", "债权投资更新错误"),
    CODE_5528("5528", "债权信息更新失败"),
    CODE_5529("5529", "债权原标的信息不存在"),
    CODE_5530("5530", "借款人不能投资自己名下的债权"),
    CODE_5531("5531", "债权对应原投资记录的已还款本金错误"),
    CODE_5532("5532", "债权承接金额不能超过认购本金的最小比例值"),
    CODE_5533("5533", "债权承接金额不能超过认购本金的最大比例值"),
    CODE_5534("5534", "债权投资原投资记录对应的标状态不是还款中或者满标状态"),
    CODE_5535("5535", "债权承接人账户余额不足支付额外的转让手续费"),
    CODE_5536("5536", "原投资记录对应标已经还款成功，不能认购债权"),
    CODE_5537("5537", "债权挂牌金额不能超过原投资记录投资本金"),
    CODE_5538("5538", "债权挂牌金额不能超过剩余可转让投资本金"),
    CODE_5539("5539", "相同债权挂牌ID下的挂牌金额不一致"),
    CODE_5540("5540", "债权对应原始标正在还款操作中，无法进行债权认购。"),
    CODE_5541("5541", "最原始投资记录订单号对应投资记录不存在"),
    CODE_5542("5542", "首次转让,最原始投资订单号必须和原投资订单号一致"),
    CODE_5543("5543", "再次转让,最原始投资订单号必须和原投资记录最原始投资订单号一致"),
    CODE_5544("5544", "首次转让,最原始投资订单号必须和原投资订单日期一致"),
    CODE_5545("5545", "再次转让,最原始投资订单号必须和原投资记录最原始投资订单日期一致"),
    CODE_5546("5546", "挂牌ID不能为空且必须唯一"),
    CODE_5547("5547", "原投资订单号不能为空"),
    CODE_5548("5548", "原投资订单日期不能为空"),
    CODE_5549("5549", "最原始投资订单号不能为空"),
    CODE_5550("5550", "最原始投资订单号不能为空"),
    CODE_6001("6001", "还款本金错误"),
    CODE_6002("6002", "还款利息错误"),
    CODE_6003("6003", "商户标的号为空或者错误"),
    CODE_6004("6004", "项目状态错误"),
    CODE_6005("6005", "该用户不属于（借款人，担保方）不能进行还款"),
    CODE_6006("6006", "用户投资记录不存在"),
    CODE_6007("6007", "还款本金超额"),
    CODE_6008("6008", "投资人列表不能为空"),
    CODE_6009("6009", "还款利息超额"),
    CODE_6010("6010", "用户未授权无密还款"),
    CODE_6011("6011", "投资人本金金额错误"),
    CODE_6012("6012", "投资人利息金额错误"),
    CODE_6013("6013", "投资人利息管理费金额错误"),
    CODE_6014("6014", "借款管理费错误"),
    CODE_6015("6015", "还款信息更新失败"),
    CODE_6016("6016", "投资人回款记录更新失败"),
    CODE_6017("6017", "项目有进行中的债权转让"),
    CODE_6018("6018", "还款订单号重复"),
    CODE_6019("6019", "投资状态错误"),
    CODE_6020("6020", "投资人回款订单号重复"),
    CODE_6021("6021", "商户标的号不存在或者非该商户号下的"),
    CODE_6022("6022", "还款本金和利息不能同时为0"),
    CODE_6023("6023", "回款本金超过剩余可转让本金"),
    CODE_6024("6024", "投资人加息利息金额错误"),
    CODE_6501("6501", "订单查询接口交易类型不能为空"),
    CODE_6502("6502", "订单查询接口交易类型错误"),
    CODE_6503("6503", "订单号或订单日期有误,投标记录查询失败"),
    CODE_6504("6504", "订单号或订单日期有误,用户账户查询失败"),
    CODE_6505("6505", "订单号或订单日期有误,标的查询失败"),
    CODE_6506("6506", "债权查询接口投资订单号不能为空"),
    CODE_6507("6507", "债权查询接口投资订单日期不能为空"),
    CODE_6508("6508", "订单号或订单日期有误,资金流水查询失败"),
    CODE_6509("6509", "订单号或订单日期有误,债权查询失败"),
    CODE_6510("6510", "订单号或订单日期有误,标的资金流水查询查询失败"),
    CODE_6511("6511", "订单号或订单日期有误,提现记录查询失败"),
    CODE_6512("6512", "订单号或订单日期有误,充值记录查询失败"),
    CODE_6513("6513", "订单号或订单日期有误"),
    CODE_6514("6514", "订单查询接口,满标放款记录不存在"),
    CODE_6515("6515", "订单查询接口,债权认购记录不存在"),
    CODE_7001("7001", "转账金额不能为空"),
    CODE_7002("7002", "转账金额格式错误"),
    CODE_7003("7003", "转账金额必须大于零"),
    CODE_7004("7004", "订单号重复"),
    CODE_7005("7005", "平台转账超出单笔限额"),
    CODE_7006("7006", "平台转账超出个人单日限额"),
    CODE_7007("7007", "平台转账超出商户单日限额"),
    CODE_8101("8101", "资金迁移金额错误"),
    CODE_8102("8102", "资金迁移订单号重复"),
    CODE_8103("8103", "该条用户信息迁移数据格式错误"),
    CODE_8104("8104", "请求操作记录数和文件实际操作记录数不符"),
    CODE_8105("8105", "数据迁移类型错误"),
    CODE_8106("8106", "该订单号已处理"),
    CODE_8107("8107", "总条数必须为大于0"),
    CODE_8108("8108", "单次操作记录数超过最大限额"),
    CODE_8109("8109", "文件名不能为空"),
    CODE_8110("8110", "文件名格式错误，注意文件名中的日期必须与订单日期保持一致"),
    CODE_8111("8111", "该商户未开通此数据迁移功能"),
    CODE_8112("8112", "文件上传失败"),
    CODE_8113("8113", "异步消息发送失败"),
    CODE_8114("8114", "资金信息迁移格式错误"),
    CODE_8115("8115", "标的信息迁移格式错误"),
    CODE_8116("8116", "投资信息迁移格式错误"),
    CODE_8117("8117", "标的已还本金不能为空"),
    CODE_8118("8118", "标的已还本金格式不正确"),
    CODE_8119("8119", "标的已还本金不得大于标的金额"),
    CODE_8120("8120", "迁移文件未找到"),
    CODE_8121("8121", "充值对账文件上传失败"),
    CODE_9500("9500", "签名data数据为空"),
    CODE_9501("9501", "签名商户号为空"),
    CODE_9502("9502", "签名验证失败"),
    CODE_9503("9503", "业务参数解码错误"),
    CODE_9504("9504", "签文中的商户号和传输实体商户号不一致"),
    CODE_9505("9505", "接入IP非法"),
    CODE_9506("9506", "该请求订单查询不存在,请重新查询."),
    CODE_9507("9507", "SFTP上对账文件不存在"),
    CODE_9508("9508", "SFTP连接失败"),
    CODE_9509("9509", "对账查询日期错误");


    private final String code;
    private final String message;

    private YipayCodeEnum(String code, String message) {
        this.code = code;
        this.message = message;
    }

    public String getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    @Override
    public String code() {
        return code;
    }

    @Override
    public String message() {
        return message;
    }

    public static Map<String, String> mapping() {
        Map<String, String> map = Maps.newLinkedHashMap();
        for (YipayCodeEnum type : values()) {
            map.put(type.getCode(), type.getMessage());
        }
        return map;
    }

    /**
     * 通过枚举值码查找枚举值。
     *
     * @param code 查找枚举值的枚举值码。
     * @return 枚举值码对应的枚举值。
     * @throws IllegalArgumentException 如果 code 没有对应的 Status 。
     */
    public static YipayCodeEnum find(String code) {
        for (YipayCodeEnum status : values()) {
            if (status.getCode().equals(code)) {
                return status;
            }
        }
        throw new IllegalArgumentException("FudianAuditStatusEnum not legal:" + code);
    }

    /**
     * 获取全部枚举值。
     *
     * @return 全部枚举值。
     */
    public static List<YipayCodeEnum> getAll() {
        List<YipayCodeEnum> list = new ArrayList<YipayCodeEnum>();
        for (YipayCodeEnum status : values()) {
            list.add(status);
        }
        return list;
    }

    /**
     * 获取全部枚举值码。
     *
     * @return 全部枚举值码。
     */
    public static List<String> getAllCode() {
        List<String> list = new ArrayList<String>();
        for (YipayCodeEnum status : values()) {
            list.add(status.code());
        }
        return list;
    }

}
